package cn.xiaopengstack.domain.agent.adapter.repository;

import cn.xiaopengstack.domain.agent.model.valobj.*;

import java.util.List;
import java.util.Map;

/**
 * @author jiangyangang
 * 仓储类|数据防腐层接口
 */
public interface IAgentRepository {

    /**
     * 查询AI客户端API配置
     * @param clients agent 下对应的clientId
     * @return
     */
    List<AiClientApiVO> queryAiClientApiVOListByClientIds(List<String> clients);

    /**
     * 查询AI客户端对话模型
     * @param clients agent 下对应的clientId
     * @return
     */
    List<AiClientModelVO> aiClientModelVOByClientIds(List<String> clients);

    /**
     * 查询Mcp 工具
     * @param clients
     * @return
     */
    List<AiClientToolMcpVO> aiClientToolMcpVOByClientIds(List<String> clients);

    /**
     * 查询系统提示词
     * @param clients
     * @return
     */
    @Deprecated
    List<AiClientSystemPromptVO> aiClientSystemPromptVOByClientIds(List<String> clients);

    /**
     * 查询系统提示词
     * @param clients
     * @return
     */
    Map<String, AiClientSystemPromptVO> queryAiClientSystemPromptMapByClientIds(List<String> clients);

    /**
     * 查询AI客户端的顾问
     * @param clients
     * @return
     */
    List<AiClientAdvisorVO> aiClientAdvisorVOByClientIds(List<String> clients);

    /**
     * 查询AI客户端
     * @param clients
     * @return
     */
    List<AiClientVO> aiClientVOByClientIds(List<String> clients);

    /**
     * 查询对话客户端
     * @param modelIdList
     * @return
     */
    List<AiClientApiVO> queryAiClientApiVOListByModelIds(List<String> modelIdList);

    /**
     * 查询对话模型
     * @param modelIdList
     * @return
     */
    List<AiClientModelVO> AiClientModelVOByModelIds(List<String> modelIdList);

    /**
     * 查询AI Agent配置
     * @param aiAgentId
     * @return
     */
    Map<String, AiAgentClientFlowConfigVO> queryAiAgentClientFlowConfig(String aiAgentId);

    /**
     * 查询Agent
     * @param agentId
     * @return
     */
    AiAgentVo queryAgentV0ById(String agentId);
}
